import dayjs from "dayjs"
import {removeConfigLayout} from "@/utils/cache/local-storage"


/** 格式化时间 */
export const formatDateTime = (time: string | number | Date,column=null) => {
   if(column)time=time[column.property]
  return time ? dayjs(new Date(time)).format("YYYY-MM-DD HH:mm:ss") : ""
}


/**
 * 将日期字符串或Date对象转换为时间戳
 * @param {string|Date} date - 日期字符串或Date对象
 * @returns {number|null} 时间戳，转换失败返回null
 */
export const dateToTimestamp = (date) => {
  if (!date) return null;
  
  try {
    const dayjsObj = dayjs(date);
    
    if (!dayjsObj.isValid()) {
      console.warn('日期格式无效:', date);
      return null;
    }
    return  dayjsObj.valueOf();
  } catch (error) {
    console.error('日期转换失败:', error);
    return null;
  }
};

// 时间组转换成时间戳
export const updateParamsWithDateRange=(dateRange) =>{
  let obj={
    beginTime:undefined,endTime:undefined
  }
  if (dateRange && dateRange.length > 0) {
    obj.beginTime = dateToTimestamp(dateRange[0]);
    obj.endTime = dateToTimestamp(dateRange[1]);
  } else {
    obj.beginTime = null;
    obj.endTime = null;
  }
  return obj; // 返回更新后的 state 对象
}


/**
 * 时间问候语
 * @param param 当前时间，new Date() 格式
 * @description param 调用 `formatAxis(new Date())` 输出 `上午好`
 * @returns 返回拼接后的时间字符串
 */
export const formatAxis = (param: Date) => {
  let hour: number = new Date(param).getHours();
  if (hour < 6) return '凌晨好';
  else if (hour < 9) return '早上好';
  else if (hour < 12) return '上午好';
  else if (hour < 14) return '中午好';
  else if (hour < 17) return '下午好';
  else if (hour < 19) return '傍晚好';
  else if (hour < 22) return '晚上好';
  else return '夜里好';
}

/** 用 JS 获取全局 css 变量 */
export const getCssVariableValue = (cssVariableName: string) => {
  let cssVariableValue = ""
  try {
    // 没有拿到值时，会返回空串
    cssVariableValue = getComputedStyle(document.documentElement).getPropertyValue(cssVariableName)
  } catch (error) {
    console.error(error)
  }
  return cssVariableValue
}

/** 用 JS 设置全局 CSS 变量 */
export const setCssVariableValue = (cssVariableName: string, cssVariableValue: string) => {
  try {
    document.documentElement.style.setProperty(cssVariableName, cssVariableValue)
  } catch (error) {
    console.error(error)
  }
}

/** 重置项目配置 */
export const resetConfigLayout = () => {
  removeConfigLayout()
  location.reload()
}

export function deepClone(source: any) {
  if (!source && typeof source !== 'object') {
    // @ts-ignore
    throw new Error('error arguments', 'deepClone')
  }
  const targetObj = source.constructor === Array ? [] : {}
  Object.keys(source).forEach(keys => {
    if (source[keys] && typeof source[keys] === 'object') {
      targetObj[keys] = deepClone(source[keys])
    } else {
      targetObj[keys] = source[keys]
    }
  })
  return targetObj
}


